Computing systems are currently in wide use. Some computing systems are relatively large, and may include, for instance, thousands of different user interface and data entities, like tables and other artifacts. Such computing systems are often customized (some heavily customized) before they are deployed in a given implementation. For example, computer programs can be developed on various development tools. Many software developers use interactive (or integrated) development environments (IDEs) in order to develop software. The developers use an IDE in order to develop models of types within a computing system, and in order to customize those models.
By way of example, some computing systems include enterprise resource planning (ERP) systems, customer relations management (CRM) systems, line-of-business (LOB) systems, among others. These types of computing systems often include many thousands of different types that are modeled and customized. By way of example, some such systems often have thousands of different forms, alone, not to mention many other types. Such systems also commonly include a great deal of logic, as well as workflows, and data entities (such as tables) that allow users to access the system and perform a set of activities, or tasks, in order to carry out their duties within a particular organization for which they are working.
These systems are not the only types of computing systems that have a large number of types. For instance, gaming systems, or a wide variety of other types of systems, often also have many thousands of different types that are modeled in the computing system.
The various types that are modeled in the computing system are compiled (or assembled) into assemblies that are run during runtime. The modeled types can represent data or workflow. For instance, the computing system may store information as a collection of entities, where each entity represents an item associated with an organization. A customer entity, for example, may represent a customer. A sales order entity, for instance, may represent a sales order. A sales quote entity may represent a sales quote. These are illustrative examples only.
When such a computing system is deployed in a specific organization, it is common for the computing system to be highly customized in order to meet the functional requirements of the particular organization in which it is deployed. By way of example, different organizations may wish to have different fields on a given form that represents a customer entity. In addition, for example, different organizations may wish to have different logic for computing a currency conversion on an expense report form. Thus, it can be seen that a given computing system may be heavily customized so that it meets the requirements of a given organization that is using it.
A computing system may also have multiple different layers of customization. For instance, a software company that has created and developed the basic system may simply sell the system as a base product. An independent software vendor (ISV) may then generate a set of customizations to the base product, so that the base product can be resold with those customizations. A value added reseller (VAR) may add another layer of customizations, and the ultimate end user of the product may be in a partnership with a development partner, where the development partner adds their own customizations.
Currently, when a developer or other programmer generates customizations to a base product, the customizations are used to overwrite the base application models in the base product. Such overwriting is achieved by compiling the application model with the changes (to reflect the customizations) already made.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.